﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections;
using Business;
using Bostik.Common.Infos;
using System.IO;
using System.Diagnostics;

namespace Bostik
{
    public partial class Frm_Requisitos_Cliente_Contrato : Form
    {
       public Hashtable hashtable = new Hashtable();
       private OpenFileDialog BuscarImagen = new OpenFileDialog();

        public Frm_Requisitos_Cliente_Contrato()
        {
            
            InitializeComponent();
           
        }


        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        } 

        private void Frm_Requisitos_Cliente_Contrato_Load(object sender, EventArgs e)
        {

            
            this.textBox5.Text = hashtable["NomCliente"].ToString();
            if (hashtable["TipoPersona"].ToString() == "1")
            {
                this.chk1.Enabled = false;
                this.chk2.Enabled = false;
                this.chk3.Enabled = false;
                this.chk4.Enabled = false;
                this.chk5.Enabled = false;
                this.chk6.Enabled = false;
                this.chk7.Enabled = false;
                this.chk8.Enabled = false;


                this.chk1_f.Enabled = true;
                this.chk2_f.Enabled = true;
                this.chk3_f.Enabled = true;
                this.chk4_f.Enabled = true;
                this.chk5_f.Enabled = true;
                this.chk6_f.Enabled = true;
                this.chk7_f.Enabled = true;
                
                

            }
            else
            {
                this.chk1.Enabled = true;
                this.chk2.Enabled = true;
                this.chk3.Enabled = true;
                this.chk4.Enabled = true;
                this.chk5.Enabled = true;
                this.chk6.Enabled = true;
                this.chk7.Enabled = true;
                this.chk8.Enabled = true;


                this.chk1_f.Enabled = false;
                this.chk2_f.Enabled = false;
                this.chk3_f.Enabled = false;
                this.chk4_f.Enabled = false;
                this.chk5_f.Enabled = false;
                this.chk6_f.Enabled = false;
                this.chk7_f.Enabled = false;
            
            }

            Busqueda();

        }


        private void Busqueda()
        {


            AccesoBusiness negocio = new AccesoBusiness();

            DataSet resultado = negocio.BuscaRequisitos(Convert.ToInt32(hashtable["IdCliente"].ToString()));

            if (resultado.Tables[0].Rows.Count > 0)
            {

              hashtable["TipoPersona"] = resultado.Tables[0].Rows[0]["EsPersonaFisica"].ToString();



              chkTodos.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chkTodos"].ToString()));

                if (Convert.ToInt32(resultado.Tables[0].Rows[0]["EsPersonaFisica"].ToString()) == 1)
                {
                    this.chk1_f.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk1"].ToString()));
                    this.chk2_f.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk2"].ToString()));
                    this.chk3_f.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk3"].ToString()));
                    this.chk4_f.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk4"].ToString()));
                    this.chk5_f.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk5"].ToString()));
                    this.chk6_f.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk6"].ToString()));
                    this.chk7_f.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk7"].ToString())); 
                }
                else
                {
                    chk1.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk1"].ToString()));
                    chk2.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk2"].ToString()));
                    chk3.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk3"].ToString()));
                    chk4.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk4"].ToString()));
                    chk5.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk5"].ToString()));
                    chk6.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk6"].ToString()));
                    chk7.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk7"].ToString()));
                    chk8.Checked = Convert.ToBoolean(Convert.ToInt32(resultado.Tables[0].Rows[0]["chk8"].ToString())); 

                }

               
                this.dtFacturas.DataSource = resultado.Tables[1];
            
            }

        }

        private void button2_Click(object sender, System.EventArgs e)
        {
           
            BuscarImagen.Filter = "Archivos de Imagen|*.*";
            //Aquí incluiremos los filtros que queramos.

            BuscarImagen.FileName = "";

            BuscarImagen.Title = "Agregar Documento, Foto, Factura";


            BuscarImagen.InitialDirectory = "C:\\";
            //BuscarImagen.FileName = this.textBox1.Text;

            if (BuscarImagen.ShowDialog() == DialogResult.OK)
            {

                /// Si esto se cumple, capturamos la propiedad File Name y la guardamos en el control
               
                String Direccion = BuscarImagen.FileName;
                this.pictureBox1.ImageLocation = Direccion;

                //Pueden usar tambien esta forma para cargar la Imagen solo activenla y comenten la linea donde se cargaba anteriormente 

                //this.pictureBox1.ImageLocation = textBox1.Text;

                pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            }
        }
       
        private void button1_Click(object sender, System.EventArgs e)
        {
            //guardaimagen
            //BuscarImagen.FileName;

            if (string.IsNullOrEmpty(BuscarImagen.FileName))
                return;

            InfoRequisitoClientes InfoArchivo = new InfoRequisitoClientes();
            
           
            InfoArchivo.IdCliente = Convert.ToInt32(hashtable["IdCliente"].ToString()); 
            InfoArchivo.Archivo = StreamFile(BuscarImagen.FileName);
            InfoArchivo.NomDocumento = BuscarImagen.SafeFileName ;
            InfoArchivo.DescripcionDoc = this.txtDescripcion.Text;

            //byte[] bytes = System.IO.File.ReadAllBytes(BuscarImagen.FileName);
             
           // File.WriteAllBytes(InfoArchivo.NomDocumento, InfoArchivo.Archivo);

            AccesoBusiness negocio = new AccesoBusiness();

            DataSet resultado = negocio.GuardaArchivoRequisitos(InfoArchivo);

            MessageBox.Show("Archivo Guardado", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);

            Busqueda();

            
           
        }

        private byte[] StreamFile(string filename)
        {
            FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read);

            // Create a byte array of file stream length
            byte[] ImageData = new byte[fs.Length];

            //Read block of bytes from stream into the byte array
            fs.Read(ImageData, 0, System.Convert.ToInt32(fs.Length));

            //Close the File Stream
            fs.Close();
            return ImageData; //return the byte data
        }

        

        private void button4_Click(object sender, System.EventArgs e)
        {

            //guarda requisitos
            InfoRequisitoClientes InfoArchivo = new InfoRequisitoClientes();
            InfoArchivo.IdCliente = Convert.ToInt32(hashtable["IdCliente"].ToString());
            InfoArchivo.EsPersonaFisica = Convert.ToInt32(hashtable["TipoPersona"].ToString());
            InfoArchivo.TieneTodosDocs =  Convert.ToInt32(this.chkTodos.Checked);

            if (InfoArchivo.EsPersonaFisica == 1)
            {
                 InfoArchivo.Ck1 = Convert.ToInt32(this.chk1_f.Checked);
                InfoArchivo.Ck2 = Convert.ToInt32(this.chk2_f.Checked);
                InfoArchivo.Ck3 =Convert.ToInt32(this.chk3_f.Checked);
                InfoArchivo.Ck4 = Convert.ToInt32(this.chk4_f.Checked);
                InfoArchivo.Ck5 =Convert.ToInt32(this.chk5_f.Checked);
                InfoArchivo.Ck6 = Convert.ToInt32(this.chk6_f.Checked);
                InfoArchivo.Ck7 = Convert.ToInt32(this.chk7_f.Checked);
                InfoArchivo.Ck8 = 0;
            }
            else
            {
                InfoArchivo.Ck1 = Convert.ToInt32(chk1.Checked);
                InfoArchivo.Ck2 = Convert.ToInt32(chk2.Checked);
                InfoArchivo.Ck3 = Convert.ToInt32(chk3.Checked);
                InfoArchivo.Ck4 = Convert.ToInt32(chk4.Checked);
                InfoArchivo.Ck5 = Convert.ToInt32(chk5.Checked);
                InfoArchivo.Ck6 = Convert.ToInt32(chk6.Checked);
                InfoArchivo.Ck7 = Convert.ToInt32(chk7.Checked);
                InfoArchivo.Ck8 = Convert.ToInt32(chk8.Checked);
            
            }

            AccesoBusiness negocio = new AccesoBusiness();

            DataSet resultado = negocio.GuardaRequisitos(InfoArchivo);


            MessageBox.Show("Datos Guardados", "Bostik", MessageBoxButtons.OK, MessageBoxIcon.Information);
            Busqueda();
        }

        private void dtFacturas_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {

               AccesoBusiness negocio = new AccesoBusiness();

               DataSet resultado = negocio.BuscaRequisitosArchivos(Convert.ToInt32(hashtable["IdCliente"].ToString() ), Convert.ToInt32(dtFacturas.Rows[e.RowIndex].Cells["IdArchivo"].Value));

               string Nombre = Convert.ToString(dtFacturas.Rows[e.RowIndex].Cells["NombreArchivo"].Value);

               if (string.IsNullOrEmpty(Nombre))
                   return;

               byte[] bytes = (byte[])resultado.Tables[0].Rows[0]["Archivo"];
           
            string Path = "C:\\Temporales\\" + hashtable["IdCliente"].ToString() + "\\";
            if (!Directory.Exists(Path))
            {
                Directory.CreateDirectory(Path);
            }
            if (!File.Exists(Path + Nombre ))
            {
                File.WriteAllBytes(Path + Nombre, bytes);
            }

            Process.Start(Path + Nombre);
             
        }

        private void dtFacturas_Layout(object sender, LayoutEventArgs e)
        {
            
            if(dtFacturas.Columns["Archivo"] != null)
                dtFacturas.Columns["Archivo"].Visible = false;
        }
    }
}
